package com.zhentao.ai.model;

import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;

import java.math.BigDecimal;
import java.time.LocalDateTime;

/**
 * 预测结果
 * @author zhentao
 * @date 2024-12-19
 */
@Data
@NoArgsConstructor
@AllArgsConstructor
public class PredictionResult {
    
    /**
     * 预测值数组
     */
    private double[] predictions;
    
    /**
     * 置信区间数组
     */
    private ConfidenceInterval[] confidenceIntervals;
    
    /**
     * 模型信息
     */
    private String modelInfo;
    
    /**
     * 残差方差
     */
    private BigDecimal residualVariance;
    
    /**
     * 模型准确度指标
     */
    private ModelAccuracy accuracy;
    
    /**
     * 预测生成时间
     */
    private LocalDateTime generateTime = LocalDateTime.now();
    
    /**
     * 使用的历史数据点数
     */
    private Integer historyDataPoints;
    
    /**
     * 预测期数
     */
    private Integer forecastPeriods;
    
    /**
     * 模型评估指标
     */
    @Data
    @NoArgsConstructor
    @AllArgsConstructor
    public static class ModelAccuracy {
        /**
         * 平均绝对误差 (MAE)
         */
        private BigDecimal mae;
        
        /**
         * 均方根误差 (RMSE) 
         */
        private BigDecimal rmse;
        
        /**
         * 平均绝对百分比误差 (MAPE)
         */
        private BigDecimal mape;
        
        /**
         * R平方值
         */
        private BigDecimal rSquared;
    }
}
